"""
配置文件
"""

import os
from typing import Optional


class Config:
    """应用配置"""

    # Flask 配置
    SECRET_KEY: str = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')
    DEBUG: bool = os.getenv('DEBUG', 'False').lower() == 'true'

    # Binance API 配置
    BINANCE_API_KEY: Optional[str] = os.getenv('BINANCE_API_KEY')
    BINANCE_API_SECRET: Optional[str] = os.getenv('BINANCE_API_SECRET')

    # Binance Testnet 配置（用于测试）
    BINANCE_TESTNET: bool = os.getenv('BINANCE_TESTNET', 'False').lower() == 'true'

    # Binance Base URL
    # 生产环境
    BINANCE_BASE_URL = "https://api.binance.com"

    # 测试环境
    BINANCE_TESTNET_URL = "https://testnet.binance.vision"

    # DeepSeek API 配置
    DEEPSEEK_API_KEY: Optional[str] = os.getenv('DEEPSEEK_API_KEY')
    DEEPSEEK_API_URL: str = os.getenv('DEEPSEEK_API_URL', 'https://api.deepseek.com/v1/chat/completions')

    # 图片存储配置
    CHARTS_DIR: str = os.getenv('CHARTS_DIR', 'charts')

    @classmethod
    def get_charts_dir(cls) -> str:
        """获取图表存储目录的绝对路径"""
        import os
        base_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
        charts_dir = os.path.join(base_dir, cls.CHARTS_DIR)
        # 创建目录（如果不存在）
        os.makedirs(charts_dir, exist_ok=True)
        return charts_dir

    @classmethod
    def get_binance_base_url(cls) -> str:
        """获取 Binance Base URL"""
        if cls.BINANCE_TESTNET:
            return cls.BINANCE_TESTNET_URL
        return cls.BINANCE_BASE_URL

    @classmethod
    def validate_config(cls) -> None:
        """验证配置"""
        if not cls.BINANCE_API_KEY:
            raise ValueError("BINANCE_API_KEY 环境变量未设置")
        if not cls.BINANCE_API_SECRET:
            raise ValueError("BINANCE_API_SECRET 环境变量未设置")


# 创建配置实例
config = Config()
